Unlike telephones, computers are not universally accessible. For example, a person may not be able to easily use someone else's computer due to the unavailability of data files, the unavailability of certain applications or even established personal preferences. Initially, mainframe and minicomputer users shared a consistent environment in a single, shared system. Though consistent, the shared system was sometimes unresponsive and prevented use of a computer away from the system. In response, the computing industry began emphasizing personal computing. Personal computing allowed users to customize their computer and increase the responsiveness of the computer. The increase in responsiveness, however, came with the cost of a decrease in consistency. In other words, a view at one computer would not be consistent with a view at another computer. The view may be defined as a visible presentation by a computer or a computing device of the state of an application. The state may be defined as the condition of an application on a computer, laptop or another viewer. For example, if editing a document, the state would be the condition of the document.
Networked computing environments seemed to be responsive and also provide an increase in consistency over individual personal computers. The networked computing environments seemed sufficient within a single security domain such as a corporate intranet or university-wide network since such environments do allow users to log into multiple terminals. In addition, remote access tools allow users to dial into or tunnel to their corporate intranet to get access to the networked computing environments. Though these tools continue to improve, remote access still results in added latency or inconsistency.
The growth of the Internet and a new generation of computing devices has further emphasized the need for remote access. Eventually, each person may have many computing devices and each person will expect the multiple and remote devices to work consistently. For example, a person would like to be able to work all day at the office, using a research operating system such as Plan 9 or Linux. At the end of the day, this person may walk away from the office computer with possibly uncommitted changes to a stable storage. On the way home, this person may want to use a wireless personal digital assistant (PDA) or another portable device and continue working on the same project from work with it in the same state as when the person left the office.
Web browsers are available for use that allow a user to view a similar state regardless of which computing device is being used. Web browsers, however, suffer from latency. In addition, Web browsers do not see changes to its state unless the browser program was written to check for changes. In other words, the web browser must poll for changes instead of being informed that there is an update and automatically updating the view.
Some applications are split in two pieces in an attempt to hide the latency of the connection between a user and his data. For example, the Sam text editor has one application piece, the service, that runs near a file system where data editing takes place and a second application piece, the viewer, that runs on whatever computing device is being used. The viewer and the service communicate using a protocol that keeps track of the state of both halves. Sam may provide an increase in responsiveness by performing more work at the second distributed piece of the application which hides the network latency from the user.
Internet Message Access Protocol (IMAP) is another divided application which may hide network latency. IMAP is similar to Sam except IMAP is for electronic mail. IMAP is an example of an application that may display state changes after polling for them. Like Sam, IMAP is simply an application that may be used to hide network latency. Neither Sam or IMAP, however, provide an infrastructure that may support multiple applications.
Accordingly, what is needed in the art is an architecture and method that provides a consistent, responsive view to a wide variety of networked computing devices.